package map;

import java.util.EventListener;

import mapelements.background.Background;
import mapelements.foreground.Foreground;


/**rappresenta una classe che è interessata ai cambiamenti circa la mappa.
 * Questo si traduce nel fatto che ogni volta che la mappa viene modificata (in una
 * o più delle sue componenti) la classe implementante questa interfaccia viene
 * notificata con un MapEvent
 * 
 * @author koldar
 * @version 1.2
 */
public interface MapListener extends EventListener{
	
	/**indica la lista di istruzioni da eseguire quando il background viene in un qualche modo
	 * modificato (inserito, aggiornato, eliminato)
	 * 
	 * @param arg0
	 */
	public void backgroundChanged(MapEvent<Background> arg0);
	
	/**indica la lista di istruzioni da eseguire quando un foreground viene in modo <strong>generale</strong>
	 * modificato (inserito, aggiornato, eliminato). Se ad un certo foreground vengono cambiati certi attributi (come la <tt>shape</tt>) allora
	 * sarebbe consigliato usare l'interfaccia <tt>ForegroundListener</tt> 
	 * 
	 * @param arg0
	 */
	public void foregroundChanged(MapEvent<Foreground> arg0);
	
	/**indica la lista di istruzioni che devono essere eseguite qualora la mappa cambi la sua mapresolution.
	 * 
	 * @param newmapresolution 
	 */
	public void mapresolutionChanged(MapResolutionEvent arg0);
	
	/**indica la lista di istruzioni che devono essere eseguite quando la lunghezza della mappa cambia
	 * 
	 * @param arg0
	 */
	public void widthChanged(MapWidthEvent arg0);
	/**indica la lista di istruzioni che devono essere eseguite quando la larghezza della mappa cambia
	 * 
	 * @param arg0
	 */
	public void heightChanged(MapHeightEvent arg0);
}
